1. Field of Invention
The invention relates generally to data redundancy, and more specifically to apparatuses and methods for increasing the execution speed of an exclusive-OR (XOR) process.
2. Art Background
In data processing systems, hardware failure is an ever present possibility which system providers must anticipate and provide for in system designs so that data integrity is preserved and the user experience can be free from data loss. Thus, data protection and recovery is paramount to the user experience. There are various ways of providing data protection. Techniques such as Random Array of Independent Disks (RAID) have been developed to provide redundant storage of data on multiple disk drives since the possibility of simultaneous failure of more than one disk drive at a time is very low. RAID5 is one of several RAID architectures that can be used to provide data redundancy. In RAID5, redundant data is calculated and then the original data and the calculated redundant data are distributed across multiple storage devices. Redundant data is calculated with an exclusive-OR (XOR) operation. In the case of a disk or storage system failure, the redundant data is used to recover the original data. Calculation of redundant data during the XOR operation presents extra computation cycles for the data processing system which can slow down system performance. This can present a problem.
XOR operation is an essential part of any RAID data protection system. Redundant data, calculated with an XOR process, must be computed efficiently with minimum impact to system performance. As user data flows from volatile memory to a storage device, it must be XORed with its corresponding XOR buffer. This operation may occur many times as pieces of data flow through, thereby requiring an XOR operation to be performed at different specific locations in the XOR buffer. User data can have an offset in memory which differs from its corresponding offset in an XOR buffer. An approach to this problem of different offsets may require a system to have a fixed offset or place other restrictions on the memory architecture which will limit the usefulness or flexibility of the system such as increasing clock cycles needed to move an amount of data. All of this presents a problem.